//
//  Monster.swift
//  Monster
//
//  Created by 左忠飞 on 2021/8/4.
//

import Foundation

class Monster{
    var town:Town?
    var name = "Monster"
    
    //读写属性,可读可写
    var victimPool:Int {
        get{
            return town?.population ?? 0
        }
        set(newValue){
            town?.population = newValue
        }
    }
    
    //重写父类的类型计算属性,使用class标注的类型属性可以被子类重写
    class var spookyNoise:String {
        return "Grrr"
    }
    
    //类的静态属性
    //使用static标注,子类不可覆盖,可以使用
    static let isTerrifying = true
    
    func terrorizeTown(){
        if town != nil {
            print("\(name) is terrorizing a town!")
        }else{
            print("\(name) hasn`t fount a town to terrorizing")
        }
    }
    
    //使用class声明一个类的类性方法
    //如果使用static标注的类型方法,子类不可以重写
    //也可以使用final class来标注类型方法,子类同样不可以重写
    
    //结构体的类型方法使用static标注
    class func makeSpookNoise() -> String{
        return "Brains..."
    }
}
